The size of a threshold voltage of a flash memory cell may be adjusted based on data to be programmed, when programming data. For example, the size of the threshold voltage of the flash memory denotes data programmed in the flash memory cell.
In order to read data programmed in the flash memory cell, the threshold voltage of the flash memory cell may be compared with at least one reference voltage, such as a read level. For example, for a flash memory cell of a Single Level Cell (SLC) and a reference voltage is A, when a threshold voltage of a read flash memory cell is less than the reference voltage A, data programmed in the flash memory cell may be read as 1, and when the threshold voltage of the read flash memory cell is greater than the reference voltage A, data programmed in the memory cell may be read as 0. However, a threshold voltage of a flash memory cell in which data is programmed may be changed into a threshold voltage having a different level by different factors, such as charge loss, floating poly coupling, and other factors. In this regard, when the threshold voltage of the flash memory cell is changed to be near the reference voltage, reliability may be reduced with respect to data of a read flash memory cell. For example, in a flash memory cell having a threshold voltage near the reference voltage, a number of errors may occur such that data may be read data as 0 even though programmed data is 1, and conversely, data may be read data as 1 even though programmed data is 0.